package entity;

import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@SequenceGenerator(sequenceName="seq_venda",name="seq_venda")
public class Venda {

	@Id
	@GeneratedValue(generator="seq_venda")
	private Integer idVenda;
	// campo do tipo tempo (data, DATE, hora= TIME,, data & Hora -- TIMESTAMP) -- TEMPORAL
	@Temporal(TemporalType.DATE)
	private Date dataVenda;
	
	private Double valor;
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="id_cliente")
	private Cliente cliente;
	
	//Muitos p muitos JOIN TABLE-- tabela associativa
	@ManyToMany(fetch=FetchType.EAGER)
	@JoinTable(name="itens_venda", joinColumns=@JoinColumn(name="id_venda"),
		inverseJoinColumns=@JoinColumn(name="id_produto"))
	private List<Produto> produtos;
	
	
	public Venda() {
		
	}


	public Venda(Integer idVenda, Date dataVenda, Double valor) {
		super();
		this.idVenda = idVenda;
		this.dataVenda = dataVenda;
		this.valor = valor;
	}


	@Override
	public String toString() {
		return "Venda [idVenda=" + idVenda + ", dataVenda=" + dataVenda
				+ ", valor=" + valor + ", cliente=" + cliente + ", produtos="
				+ produtos + "]";
	}


	public Integer getIdVenda() {
		return idVenda;
	}


	public void setIdVenda(Integer idVenda) {
		this.idVenda = idVenda;
	}


	public Date getDataVenda() {
		return dataVenda;
	}


	public void setDataVenda(Date dataVenda) {
		this.dataVenda = dataVenda;
	}


	public Double getValor() {
		return valor;
	}


	public void setValor(Double valor) {
		this.valor = valor;
	}


	public Cliente getCliente() {
		return cliente;
	}


	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}


	public List<Produto> getProdutos() {
		return produtos;
	}


	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}
	
	
	
}
